package decorator.children;

import decorator.base.BaseBeverage;
import decorator.base.BaseCondimentDecorator;

/**
 * 摩卡调料
 * @author yaojianfeng
 */
public class Mocha extends BaseCondimentDecorator {
    /**
     * 用一个实例变量记录饮料,也就是被继承者
     */
    private BaseBeverage beverage;

    /**
     * 让被装饰者记录到实例变量中
     * 做法:把饮料当做构造器的参数,再由构造器将此饮料记录在实例变量中
     * @param beverage 咖啡基类
     */
    public Mocha(BaseBeverage beverage) {
        this.beverage = beverage;
    }

    /**
     * 获取完整的描述
     * @return 字符串
     */
    @Override
    public String getDescription() {
        return beverage.getDescription() + ",摩卡咖啡";
    }

    /**
     * 计算咖啡的价格
     *首先调用委托给被装饰对象,以计算价格,然后加上摩卡的价钱,最后得到结果
     * @return 价格
     */
    @Override
    public float cost() {
        return 0.20F+beverage.cost();
    }
}
